The Internet Protocol (“IP”) serves as the de-facto standard for forwarding data messages (“datagrams”) between network devices connected with the Internet. To that end, IP delivers datagrams across a series of Internet devices, such as routers and switches, in the form of one or more data packets. Each packet has two principal parts: (1) a payload with the information being conveyed (e.g., text, graphic, audio, or video data), and (2) a header, known as an “IP header,” having the address of the network device to receive the packet(s) (the “destination device”), the identity of the network device that sent the packet (the “originating device”), and other data for routing the packet.
Many people thus analogize packets to a traditional letter using first class mail, where the letter functions as the payload, and the envelope, with its return and mailing addresses, functions as the IP header.
Current Internet devices forward packets one-by-one based essentially on the address of the destination device in the packet header. Among other benefits, this routing scheme enables network devices to forward different packets of a single datagram along different routes to reduce network congestion, or avoid malfunctioning network devices. Those skilled in the art thus refer to IP as a “stateless” protocol because, among other reasons, it does not save packet path data, and does not pre-arrange transmission of packets between end points.
While it has benefits, IP's statelessness introduces various limitations. For example, without modification, a stateless IP network inhibits or prevents: 1) user mobility in mobile networks, 2) session layer load balancing for packet traffic in the network, and 3) routing between private or overlapping networks. The art has responded to this problem by implementing tunneling protocols, which provide these functions. Specifically, tunneling protocols transport IP datagrams to a destination along a route that normally is different than the route the datagram would have taken if it had not used a tunneling protocol. While nominally accomplishing their goals, tunneling protocols undesirably introduce additional problems into the network. For example, tunneling requires additional overhead that can induce IP packet fragmentation, consequently introducing substantial network inefficiencies into a session. In addition, tunnels generally use more bandwidth than non-tunneled packets, and tunnel origination and termination requires additional CPU cycles per packet. Moreover, tunnel addresses must be provisioned in advance, reducing flexibility.
Other attempts to overcome problems introduced by statelessness suffer from similar deficiencies.